home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / utils / ted / tedtro2.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1994-10-02  |  5.3 KB  |  197 lines

  1. {
  2.                           Coding & Editing by :
  3.         █▀▀▀▀▀▀█ █▀▀▀▀▀▀█ █▀▀▀▀▀▀█ █▀▀▀▀▀▀█ █▀▀▀▀▀█ █ █▀▀▀▀▀▀▀ █▀▀▀▀▀▀▀
  4.         █▀▀▀▀▀▀▀ █▀▀▀▀▀▀█ █▀▀▀▀▀█▀ █▀▀▀▀▀▀█ █     █ █ ▀▀▀▀▀▀▀█ █▀▀▀▀▀
  5.         █        █      █ █      █ █      █ █     █ █        █ █
  6.         █        █      █ █      █ █      █ █     █ █        █ █
  7.         █        █      █ █      █ █      █ █     █ █        █ █
  8.         █        █      █ █      █ █      █ █▄▄▄▄▄█ █ ▄▄▄▄▄▄▄█ █▄▄▄▄▄▄▄
  9.  
  10.         Programmed by Marcin Jaskowiak, aka Paradise, Lublin, Poland,
  11.                           in Turbo Pascal 7.0.
  12.  
  13.         This is FUQNWARE - if u like it, u must register it by sending
  14.         some money (u tell how much) to ME:) if not - u choose.
  15.         Read TED.DOC 4 more info.
  16.  
  17.         Snail mail:                      Email:
  18.         Marcin Jaskowiak                 liksay@bachus.umcs.lublin.pl
  19.         Flat 114, 3 Zarnowiecka Str.
  20.         20-630 Lublin
  21.         Poland
  22.  
  23.                                Presents :
  24.                     TED font editor SCROLLERS PACK 94
  25.                                 with :
  26.                              EXAMPLE NR 2
  27. }
  28. PROGRAM TED_INTRO_NR2;
  29. USES DOS,CRT;
  30.  
  31. CONST
  32.  SEGA000        : WORD = $A000;
  33. VAR
  34.  BITMAP         : ARRAY [1..40,0..319] OF BYTE;
  35.  PALETTE        : ARRAY [0..255,1..3] OF BYTE;
  36.  CHARS          : ARRAY [' '..']'] OF POINTER;
  37.  CHARSDATA      : ARRAY [' '..']',1..3] OF BYTE;
  38.  F              : FILE;
  39.  B,ROW,NR       : BYTE;
  40.  X,Y,I          : INTEGER;
  41.  CH,K           : CHAR;
  42.  TEKST          : STRING;
  43.  
  44. {───────────────────────────────────────────────────────────────────────────}
  45. PROCEDURE INITVGA; ASSEMBLER; { INITIALIZE VGA CARD MODE 13H }
  46. ASM
  47.  MOV AX,0013H
  48.  INT 10H
  49. END;
  50. {───────────────────────────────────────────────────────────────────────────}
  51. PROCEDURE CLOSEVGA; ASSEMBLER; { CLOSE VGA MODE AND SET TEXT }
  52. ASM
  53.  MOV AX,0003H
  54.  INT 10H
  55. END;
  56. {───────────────────────────────────────────────────────────────────────────}
  57. PROCEDURE VSYNC; ASSEMBLER;
  58. ASM
  59.  MOV DX,03DAH
  60.  @L1: IN AL,DX; TEST AL,8; JNZ @L1;
  61.  @L2: IN AL,DX; TEST AL,8; JZ  @L2;
  62. END;
  63. {───────────────────────────────────────────────────────────────────────────}
  64. PROCEDURE DRAWBITMAP; ASSEMBLER;
  65. ASM
  66.  XOR DI,DI
  67.  MOV ES,SEGA000
  68.  MOV SI,OFFSET BITMAP
  69.  MOV CX,6400
  70.  CLD
  71.  REP MOVSW
  72. END;
  73. {───────────────────────────────────────────────────────────────────────────}
  74. PROCEDURE SCROLLBITMAP(VAR MAP); ASSEMBLER;
  75. ASM
  76.   LDS SI,MAP
  77.   LES DI,MAP
  78.   INC SI
  79.   INC SI
  80.   INC SI
  81.   MOV CX,6400
  82.   REP MOVSW
  83. END;
  84. {───────────────────────────────────────────────────────────────────────────}
  85. PROCEDURE SETCOLOR(NR,R,G,B: BYTE); ASSEMBLER; { SET RGB VAL TO COLOR NR }
  86. ASM
  87.  MOV DX,3C8H
  88.  MOV AL,NR
  89.  OUT DX,AL
  90.  INC DX
  91.  MOV AL,R
  92.  OUT DX,AL
  93.  MOV AL,G
  94.  OUT DX,AL
  95.  MOV AL,B
  96.  OUT DX,AL
  97. END;
  98. {───────────────────────────────────────────────────────────────────────────}
  99. PROCEDURE LOADPAL(NAME: STRING); { LOAD .PAL FILE AND SET PALETTE }
  100. BEGIN
  101.  ASSIGN(F,NAME+'.PAL');
  102.  RESET(F,1);
  103.  BLOCKREAD(F,PALETTE,768);
  104.  CLOSE(F);
  105.  FOR B:=0 TO 255 DO SETCOLOR(B,PALETTE[B,1],PALETTE[B,2],PALETTE[B,3]);
  106. END;
  107. {───────────────────────────────────────────────────────────────────────────}
  108. PROCEDURE LOADTED(NAME: STRING); { LOAD .TED FILE TO MEMORY }
  109. VAR TX,TY: BYTE; CH: CHAR;
  110. BEGIN
  111.  ASSIGN(F,NAME+'.TED');
  112.  RESET(F,1);
  113.  SEEK(F,20);
  114.  WHILE NOT(EOF(F)) DO
  115.  BEGIN
  116.   BLOCKREAD(F,CH,1);
  117.   BLOCKREAD(F,TX,1);
  118.   BLOCKREAD(F,TY,1);
  119.   GETMEM(CHARS[CH],TX*TY);
  120.   CHARSDATA[CH,1]:=TX; CHARSDATA[CH,2]:=TY; CHARSDATA[CH,3]:=1;
  121.   BLOCKREAD(F,CHARS[CH]^,TX*TY);
  122.  END;
  123.  IF CHARSDATA[' ',3]<>1 THEN { IF NOT SPACE " " THEN CREATE IT }
  124.  BEGIN
  125.   TX:=CHARSDATA['A',1];
  126.   TY:=CHARSDATA['A',2];
  127.   GETMEM(CHARS[' '],TX*TY);
  128.   FILLCHAR(CHARS[' ']^,TX*TY,0);
  129.   CHARSDATA[' ',3]:=1;
  130.   CHARSDATA[' ',1]:=TX;
  131.   CHARSDATA[' ',2]:=TY;
  132.  END;
  133.  CLOSE(F);
  134. END;
  135. {───────────────────────────────────────────────────────────────────────────}
  136. PROCEDURE DONETED; { DEALLOCATE FONT MEMORY }
  137. VAR CH: CHAR;
  138. BEGIN
  139.  FOR CH:=' ' TO ']' DO
  140.  BEGIN
  141.   IF CHARSDATA[CH,3]=1 THEN
  142.   BEGIN
  143.    FREEMEM(CHARS[CH],CHARSDATA[CH,1]*CHARSDATA[CH,2]);
  144.    CHARSDATA[CH,3]:=0;
  145.   END;
  146.  END;
  147. END;
  148. {───────────────────────────────────────────────────────────────────────────}
  149. PROCEDURE NEWROW(CH: CHAR; RO: BYTE; POS: INTEGER); { DRAW HORIZ LINE }
  150. VAR TX,TY: INTEGER;
  151. BEGIN
  152.  IF CHARSDATA[CH,3]<>1 THEN EXIT;
  153.  IF RO=CHARSDATA[CH,1]+1 THEN
  154.   FOR TY:=1 TO CHARSDATA[CH,2] DO BITMAP[TY,POS]:=0 { SKIP ONE ROW }
  155.  ELSE
  156.   FOR TY:=1 TO CHARSDATA[CH,2] DO
  157.    BITMAP[TY,POS]:=MEM[SEG(CHARS[CH]^):OFS(CHARS[CH]^)+(TY-1)*CHARSDATA[CH,1]+RO-1];
  158. END;
  159. {───────────────────────────────────────────────────────────────────────────}
  160. PROCEDURE UPDATE; { NEW VALUES ? }
  161. BEGIN
  162.  INC(ROW);
  163.  IF ROW>CHARSDATA[TEKST[NR],1]+1 THEN
  164.  BEGIN
  165.   ROW:=1;
  166.   INC(NR);
  167.   IF NR>LENGTH(TEKST) THEN NR:=1;
  168.  END;
  169. END;
  170. {───────────────────────────────────────────────────────────────────────────}
  171.  
  172.  
  173.  
  174. BEGIN
  175.  INITVGA;
  176.  LOADPAL('FONT000');
  177.  LOADTED('FONT000');
  178.  
  179.  ROW:=1;
  180.  TEKST:='HMM... THAT IS SIMPLE SCROLLING. AS U SEE....  IT USE FONT000.TED TO PLAY              ';
  181.  NR:=1;
  182.  
  183.  REPEAT
  184.   SCROLLBITMAP(BITMAP);
  185.   UPDATE;
  186.   NEWROW(TEKST[NR],ROW,317);
  187.   UPDATE;
  188.   NEWROW(TEKST[NR],ROW,318);
  189.   UPDATE;
  190.   NEWROW(TEKST[NR],ROW,319);
  191.   DRAWBITMAP;
  192.   VSYNC;
  193.  UNTIL KEYPRESSED;
  194.  
  195.  DONETED;
  196.  CLOSEVGA;
  197. END.